package cn.lklink.pay.lkl.request.v3.labs;

import cn.lklink.pay.lkl.core.LakalaPayConfig;
import cn.lklink.pay.lkl.request.ReqData;
import cn.lklink.pay.lkl.request.ReqLocationInfo;

/**
 * 退款交易接口请求报文
 * 交易接口V3.0下支付类接口
 *
 * @author Mr丶xie
 * @version 1.0.0
 * @mail xielinke@lklink.cn
 */
public class RefundRequest extends ReqData {

    private RefundRequest() {
    }

    /**
     * 初始化退款交易接口请求报文
     *
     * @param out_trade_no  商户交易流水号
     * @param refund_amount 退款金额
     * @param location_info 地址位置信息
     */
    public RefundRequest(String out_trade_no, String refund_amount, ReqLocationInfo location_info) {
        this.merchant_no = LakalaPayConfig.MERCHANT_NO;
        this.term_no = LakalaPayConfig.TERM_NO;
        this.out_trade_no = out_trade_no;
        this.refund_amount = refund_amount;
        this.location_info = location_info;
    }

    /**
     * 商户号
     * 拉卡拉分配的商户号
     */
    private String merchant_no;

    /**
     * 终端号
     * 拉卡拉分配的商户号
     */
    private String term_no;

    /**
     * 商户交易流水号
     * 商户系统唯一
     */
    private String out_trade_no;

    /**
     * 退款金额
     * 单位分，整数数字型字符
     */
    private String refund_amount;

    /**
     * 退款原因
     */
    private String refund_reason;

    /**
     * 原商户交易流水号
     * 下单时的商户请求流水号
     * （退款时origin_out_trade_no，origin_trade_no，origin_log_no必送其一）
     */
    private String origin_out_trade_no;

    /**
     * 原拉卡拉交易流水号
     * 下单成功时，返回的拉卡拉交易流水。 origin_out_trade_no、origin_log_no、origin_trade_no至少一个必填
     * （调用收银台下单接口拉起交易后发起退款时至少要传两个），同时存在时优先级顺序如下： origin_trade_no、origin_log_no、origin_out_trade_no。
     */
    private String origin_trade_no;

    /**
     * 原对账单流水号
     * 对账单中的交易流水。 origin_out_trade_no、origin_log_no、origin_trade_no至少一个必填
     * （调用收银台下单接口拉起交易后发起退款时至少要传两个，同时存在时优先级顺序如下： origin_trade_no、origin_log_no、origin_out_trade_no。
     */
    private String origin_log_no;

    /**
     * 地址位置信息
     * 地址位置信息，风控要求必送
     */
    private ReqLocationInfo location_info;

    public String getMerchant_no() {
        return merchant_no;
    }

    public void setMerchant_no(String merchant_no) {
        this.merchant_no = merchant_no;
    }

    public String getTerm_no() {
        return term_no;
    }

    public void setTerm_no(String term_no) {
        this.term_no = term_no;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getRefund_amount() {
        return refund_amount;
    }

    public void setRefund_amount(String refund_amount) {
        this.refund_amount = refund_amount;
    }

    public String getRefund_reason() {
        return refund_reason;
    }

    public void setRefund_reason(String refund_reason) {
        this.refund_reason = refund_reason;
    }

    public String getOrigin_out_trade_no() {
        return origin_out_trade_no;
    }

    public void setOrigin_out_trade_no(String origin_out_trade_no) {
        this.origin_out_trade_no = origin_out_trade_no;
    }

    public String getOrigin_trade_no() {
        return origin_trade_no;
    }

    public void setOrigin_trade_no(String origin_trade_no) {
        this.origin_trade_no = origin_trade_no;
    }

    public String getOrigin_log_no() {
        return origin_log_no;
    }

    public void setOrigin_log_no(String origin_log_no) {
        this.origin_log_no = origin_log_no;
    }

    public ReqLocationInfo getLocation_info() {
        return location_info;
    }

    public void setLocation_info(ReqLocationInfo location_info) {
        this.location_info = location_info;
    }
}
